package com.suprNotes;


import java.util.ArrayList;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.preference.DialogPreference;
import android.text.Layout;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.RelativeLayout;
import android.widget.ScrollView;
import android.widget.RelativeLayout.LayoutParams;


/**
 * Class editorNotas
 */
//TODO  metodo para cargar los datos a partir de lo obtenido en la bbdd y mostrarlo en pantalla
//TODO añadir o quitar elementos en la lista, en primer lugar, yo pondria un elemento por defecto que pornga introdizca si texto aki
//TODO metodo para guardar los datos en un strig para metelro en la bbdd
public class editorNotas extends Activity {

  //
  // Fields
  //
  private baseDatos dbase;
  private ArrayList<View> visibles;
  private elementoNota miNota;
  private int numeroVisib=0;
  private Layout campoEdit;
  private ImageButton butDibujo;
  private ImageButton butGuardar;
  private ImageButton butCerrar;
  private ImageButton butLista;
  private ImageButton butTabla;
  private ImageButton butExterno;
  private PredicateLayout la;
  private ScrollView loPirncipal;
  private String ddes="datooos";
  private int idEntrada=0;

  //private EditText txtTitulo;  

  //listeners
	private OnClickListener listenerBGuardar;
	private OnClickListener listenerBCerrar;
	private OnClickListener listenerBDibujo;
	private OnClickListener listenerBLista;
	private OnClickListener listenerBTabla;
	private OnClickListener listenerBExterno;
	
	
	/** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.editnota);
      dbase=new baseDatos(this);
      Bundle extras  = getIntent().getExtras();

      butDibujo=(ImageButton)findViewById(R.id.notaBoDibujo);
      butGuardar=(ImageButton)findViewById(R.id.notaBoGuardar);
      butCerrar=(ImageButton)findViewById(R.id.notaBoCerrar);
      butLista=(ImageButton)findViewById(R.id.notaBoLista);
      butTabla=(ImageButton)findViewById(R.id.notaBoTabla);
      butExterno=(ImageButton)findViewById(R.id.notaBoexterno);
      loPirncipal=(ScrollView)findViewById(R.id.notaLoPrincipal);
      if(extras != null){ 
    	  idEntrada=extras.getInt("idElement");
    	  cargar(idEntrada);
      }
      else{
    	  
      }      
      if (idEntrada!=0) this.setTitle("entrada:"+idEntrada);
      else
      this.setTitle("sin entrada");
      createListeners();
      butDibujo.setOnClickListener(listenerBDibujo);
      butGuardar.setOnClickListener(listenerBGuardar);
      butCerrar.setOnClickListener(listenerBCerrar);
      butLista.setOnClickListener(listenerBLista);
      butTabla.setOnClickListener(listenerBTabla);
      butExterno.setOnClickListener(listenerBExterno);
     // txtTitulo.setOnClickListener(listenerTTitulo);
      RelativeLayout l = new RelativeLayout(this);
      la= new PredicateLayout(editorNotas.this);   
      la.setBackgroundColor(0xffffff99);
      //TODO aniadirelemento
      LayoutParams lp = new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
      lp.setMargins(5, 5,5, 5);
      l.addView(la,lp);
      loPirncipal.addView(l,new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
      
  }
  
  //
  // Constructors
  //
  public void aniadirView(View elemento,int posicion){
	  if (posicion==0){//aniadimos al final
		 elemento.setId(visibles.size()); 
	     visibles.add(elemento);
	  }
	  else{
		  elemento.setId(posicion);
		  visibles.add(posicion, elemento);
		  updateIds();
	  }
  }
  
  private void updateIds() {
	View aux=null;
	ArrayList<View> auxi=new ArrayList<View>();
	for (int i=0 ; i<visibles.size();i++){
		aux=visibles.get(i);
		aux.setId(i);
		auxi.add(aux);
	}
	visibles=auxi;
}

public editorNotas () {
	  System.out.println("pasamos por aki");
  };
  
  public editorNotas (int nota) {
	  System.out.println("pasamos por aki");
  };
  
  //
  // Methods
  //
  
	private Dialog dialExt() {
		editorExterno alert = new editorExterno(this);
		return alert;
	}

	private Dialog dialDibu() {
		editorDibujos alert = new editorDibujos(this);
		return alert;
	}
	
	private Dialog dialTabl() {
		editorTabla alert = new editorTabla(this);
		return alert;
	}
	
	private Dialog dialList() {
		editorLista alert = new editorLista(this);
		return alert;
	}
	
  public void createListeners(){
      listenerBCerrar  = new View.OnClickListener() {
          public void onClick(View v) {

              
          }
      };
      listenerBDibujo  = new View.OnClickListener() {
          public void onClick(View v) {
        	  Dialog dDibu = dialDibu();
        	  dDibu.show();              
          }
      };
      listenerBExterno  = new View.OnClickListener() {
          public void onClick(View v) {
        	  Dialog dExt = dialExt();
        	  dExt.show();
        	  //  editorExterno ed= new editorExterno(editorNotas.this.getApplicationContext());
          }


      };
      listenerBGuardar  = new View.OnClickListener() {
          public void onClick(View v) {
              guardar();
          }
      };
      listenerBLista  = new View.OnClickListener() {
          public void onClick(View v) {
        	  Dialog dlist = dialList();
        	  dlist.show();
              
          }
      };
      listenerBTabla  = new View.OnClickListener() {
          public void onClick(View v) {
        	  Dialog dTab = dialTabl();
        	  dTab.show();
              
          }
      };
  }

  //
  // Accessor methods
  //

  /**
   * Set the value of visibles
   * @param newVar the new value of visibles
   */
  private void setVisibles ( ArrayList<View> newVar ) {
    visibles = newVar;
  }

  /**
   * Get the value of visibles
   * @return the value of visibles
   */
  private ArrayList<View> getVisibles ( ) {
    return visibles;
  }

  /**
   * Set the value of numeroVisib
   * @param newVar the new value of numeroVisib
   */
  private void setNumeroVisib ( int newVar ) {
    numeroVisib = newVar;
  }

  /**
   * Get the value of numeroVisib
   * @return the value of numeroVisib
   */
  private int getNumeroVisib ( ) {
    return numeroVisib;
  }

  /**
   * Set the value of campoEdit
   * @param newVar the new value of campoEdit
   */
  private void setCampoEdit ( Layout newVar ) {
    campoEdit = newVar;
  }

  /**
   * Get the value of campoEdit
   * @return the value of campoEdit
   */
  private Layout getCampoEdit ( ) {
    return campoEdit;
  }


  //
  // Other methods
  //

  /**
   * @return       int
   */
  public int nuevaTabla(  )
  {
	  return 0;
  }


  /**
   * @return       int
   * @param        idTabla
   */
  public int editarTabla( int idTabla )
  {
	  return 0;
  }


  /**
   * @return       int
   */
  public int nuevoExterno(  )
  {
	  return 0;
  }


  /**
   * @return       int
   * @param        idExterno
   */
  public int editarExterno( int idExterno )
  {
	  return 0;
  }


  /**
   * @return       int
   */
  public int nuevaLista(  )
  {
	  return 0;
  }


  /**
   */
  public void guardar(  )
  {
	  dbase.setNota(miNota);
  }


  /**
   * @param        id_objeto
   */
  public void cargar( int id_objeto )
  {
	  miNota = dbase.getNota(idEntrada);
	  //generar el objeto que se visualiza
	  
  }


}
